資料表位於網頁何處?
https://www.twse.com.tw/zh/index.html
台灣證券交易我
首先,在證交所首頁上方列點擊「產品與服務」->「證券編碼公告」
那我們今天要試著抓一些網頁上的資料
本國上市證券國際證券辨識號碼一覽表
(https://isin.twse.com.tw/isin/C_public.jsp?strMode=2)
爬蟲實作-上市股票清單
Python常見的用法就是 requests 和 BeautifulSoup 套件
requests:用於請求伺服器回傳資料,正則表達式篩選所需的資料。
beautifulsoup:對特定的目標加以分析、擷取的模組。
常用屬性和方法:
select() 以 CSS 選擇器的方式尋找指定的 標籤。
find_all() 找出物件中所有的指定的標籤
find() 以所在的 標籤位置,尋找第一個找到的 標籤。
find_parents()、find_parent() 以所在的 標籤 位置,尋找父層所有指定的 tag 或第一個找到的 標籤。
find_next_siblings()、find_next_sibling() 以所在的 標籤 位置,尋找同一層後方所有指定的 標籤 或第一個找到的標籤。
find_previous_siblings()、ind_previous_sibling() 以所在的 標籤 位置,尋找同一層前方所有指定的 tag 或第一個找到的標籤。
find_all_next()、find_next() 以所在的 標籤 位置,尋找後方內容裡所有指定的 標籤 或第一個找到的 標籤。
find_all_previous()、find_previous() 所在的 標籤 位置,尋找前方內容裡所有指定的 標籤 或第一個找到的 tag。
首先,我們先 import 這兩個套件:
import **requests**
# 引入 Beautiful Soup 模組
from bs4 import BeautifulSoup
透過 requests 套件的 get來訪問這個頁面,回傳結果存進 res。
url = "https://isin.twse.com.tw/isin/C_public.jsp?strMode=2"
res = requests.get(url)
使用BeautifulSoup解析回傳內容,這個表格由tr(表格行)和td(表格列)標籤組成。每個tr標籤代表一行資訊,而每個td標籤則包含了該行的每個單元格資訊。因此,我們首先使用findAll找出所有的tr標籤,然後使用for迴圈逐行提取資料。
我們將每一行tr的資料提取出來,然後再使用td解析,並使用get_text()方法取得每個td標籤中的文本值。這樣我們就能得到包含每個值的列表,程式碼中的table就是我們要抓的表格
然而,我們需要確保table列表中包含的值數量是7,根據網頁上的table 有用的資訊應該有7個值。因此,我們加入了一個資料長度的檢查以過濾掉無用的資訊。
soup = BeautifulSoup(res.text, "lxml")
tr = soup.findAll('tr')
tds = []
for raw in tr:
table = [td.get_text() for td in raw.findAll("td")]
if len(table) == 7:
tds.append(table)
這樣,我們成功地從表格中提取了所需的資訊,並可以使用pd.DataFrame將其轉換成DataFrame,以便進一步分析和處理。
import pandas as pd
pd.DataFrame(tds[1:],columns=tds[0])
總結
獲取實時市場數據是投資和交易中不可或缺的一部分。通過使用Python,我們可以輕鬆地訪問不同交易所和數據提供者的API,獲取實時數據並進行進一步的分析。這為投資者提供了更多的信息和洞察,有助於制定更明智的投資決策。無論您是長期投資者還是日常交易者,掌握實時數據串接的技能都將對您的投資過程產生積極的影響。